/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.siteuser.entity;

import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

import com.thinkgem.jeesite.common.persistence.DataEntity;

/**
 * 投资用户实体Entity
 * @author ThinkGem
 * @version 2017-08-03
 */
public class SiteUser extends DataEntity<SiteUser> {
	
	private static final long serialVersionUID = 1L;
	private Integer userId;		// 用户ID  1000000起始
	private String mobilePhone;		// 手机号码
	private String loginPassword;		// 登陆密码
	private String tradePassword;		// 交易密码
	private String bankName;		// 绑定银行卡开户行
	private String bankCode;		// 绑卡银行编码
	private String realName;		// 真实姓名
	private String cardNumber;		// 身份证号
	private String sex;		// 1,男，0，女，2未知
	private String birthday;		// 出生日期：19860406
	private String bankCardNo;		// 银行卡号
	private String bankPhone;		// 银行预留手机号
	private String isBindCard;		// 是否实名认证绑卡，0：未绑字，1：已绑字
	private String bindId;		// 绑定标识号
	private String inviteCode;		// 自己的邀请码
	private String inviterUserid;		// 邀请人id
	private String inviterCode;		// 邀请人的邀请码或者手机号
	private String inviteSum;		// 我邀请的人数
	private String riskLevel;		// 风险等级，1保守型；2谨慎型，3稳健型：4积极型，5进取型
	private String registeType;		// 注册方式：1,web;2,IOS;3,安卓；4,H5；5微信公众号
	private String registeSource;		// 注册来源：例：web郞眼财经,lycgweb
	private Date createTime;		// 创建时间
	private String email;		// email
	private String isBindEmail;		// 是否绑了邮箱，0：未绑字，1：已绑字
	private String userType;		// 用户类型：0：个人；1：公司
	private String role;		// 用户角色
	private String isCreditor;		// 是否为理财人
	private String isOriginalCreditor;		// 原始债权人
	private String isDebtor;		// 是否为借款人
	private String isGuarantor;		// 是否为担保机构
	private String isMarketmaker;		// 是否为做市商
	private String isRepurchaseParty;		// 是否为赎回机构
	private String invested;		// 是否有过投资
	private String level;		// 用户等级 1，普通用户，2VIP（大额提现）
	private String userStatus;		// 1：正常；2：锁定；3：登录；4：登出(注销);5:冻结;6:正在编辑
	private String isDeleted;		// 账户是否被注销
	private String isLocked;		// 账户是否被锁定
	private String isTradepwdLocked;		// 交易密码是否被锁定
	private Date lockedTime;		// 锁定时间
	private Date updateTime;		// 修改时间
	private String isFirstUpdateLoginPassword;		// is_first_update_login_password
	private String pwdStrength;		// 1:弱,2:中,3强
	private String isFirstLogin;		// is_first_login
	private String ip;		// ip
	private String flag;		// 用户扩展信息，0:默认，1：禁止导入CRM
	private String isFriendLink;		// 0 or NULL 非好友推荐链接注册 , 1 好友推荐链接注册
	private String isFromOldSite;		// 老平台迁移的用户标识
	private String oldPwdUpdated;		// old_pwd_updated
	private String remark;		// 预留字段
	
	public SiteUser() {
		super();
	}

	public SiteUser(String id){
		super(id);
	}

	@NotNull(message="用户ID  1000000起始不能为空")
	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	
	@Length(min=1, max=11, message="手机号码长度必须介于 1 和 11 之间")
	public String getMobilePhone() {
		return mobilePhone;
	}

	public void setMobilePhone(String mobilePhone) {
		this.mobilePhone = mobilePhone;
	}
	
	@Length(min=1, max=50, message="登陆密码长度必须介于 1 和 50 之间")
	public String getLoginPassword() {
		return loginPassword;
	}

	public void setLoginPassword(String loginPassword) {
		this.loginPassword = loginPassword;
	}
	
	@Length(min=0, max=50, message="交易密码长度必须介于 0 和 50 之间")
	public String getTradePassword() {
		return tradePassword;
	}

	public void setTradePassword(String tradePassword) {
		this.tradePassword = tradePassword;
	}
	
	@Length(min=0, max=50, message="绑定银行卡开户行长度必须介于 0 和 50 之间")
	public String getBankName() {
		return bankName;
	}

	public void setBankName(String bankName) {
		this.bankName = bankName;
	}
	
	@Length(min=0, max=20, message="绑卡银行编码长度必须介于 0 和 20 之间")
	public String getBankCode() {
		return bankCode;
	}

	public void setBankCode(String bankCode) {
		this.bankCode = bankCode;
	}
	
	@Length(min=0, max=50, message="真实姓名长度必须介于 0 和 50 之间")
	public String getRealName() {
		return realName;
	}

	public void setRealName(String realName) {
		this.realName = realName;
	}
	
	@Length(min=0, max=20, message="身份证号长度必须介于 0 和 20 之间")
	public String getCardNumber() {
		return cardNumber;
	}

	public void setCardNumber(String cardNumber) {
		this.cardNumber = cardNumber;
	}
	
	@Length(min=0, max=1, message="1,男，0，女，2未知长度必须介于 0 和 1 之间")
	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
	
	@Length(min=0, max=8, message="出生日期：19860406长度必须介于 0 和 8 之间")
	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	
	@Length(min=0, max=20, message="银行卡号长度必须介于 0 和 20 之间")
	public String getBankCardNo() {
		return bankCardNo;
	}

	public void setBankCardNo(String bankCardNo) {
		this.bankCardNo = bankCardNo;
	}
	
	@Length(min=0, max=11, message="银行预留手机号长度必须介于 0 和 11 之间")
	public String getBankPhone() {
		return bankPhone;
	}

	public void setBankPhone(String bankPhone) {
		this.bankPhone = bankPhone;
	}
	
	@Length(min=1, max=1, message="是否实名认证绑卡，0：未绑字，1：已绑字长度必须介于 1 和 1 之间")
	public String getIsBindCard() {
		return isBindCard;
	}

	public void setIsBindCard(String isBindCard) {
		this.isBindCard = isBindCard;
	}
	
	@Length(min=0, max=20, message="绑定标识号长度必须介于 0 和 20 之间")
	public String getBindId() {
		return bindId;
	}

	public void setBindId(String bindId) {
		this.bindId = bindId;
	}
	
	@Length(min=1, max=50, message="自己的邀请码长度必须介于 1 和 50 之间")
	public String getInviteCode() {
		return inviteCode;
	}

	public void setInviteCode(String inviteCode) {
		this.inviteCode = inviteCode;
	}
	
	@Length(min=0, max=20, message="邀请人id长度必须介于 0 和 20 之间")
	public String getInviterUserid() {
		return inviterUserid;
	}

	public void setInviterUserid(String inviterUserid) {
		this.inviterUserid = inviterUserid;
	}
	
	@Length(min=0, max=20, message="邀请人的邀请码或者手机号长度必须介于 0 和 20 之间")
	public String getInviterCode() {
		return inviterCode;
	}

	public void setInviterCode(String inviterCode) {
		this.inviterCode = inviterCode;
	}
	
	@Length(min=0, max=5, message="我邀请的人数长度必须介于 0 和 5 之间")
	public String getInviteSum() {
		return inviteSum;
	}

	public void setInviteSum(String inviteSum) {
		this.inviteSum = inviteSum;
	}
	
	@Length(min=0, max=1, message="风险等级，1保守型；2谨慎型，3稳健型：4积极型，5进取型长度必须介于 0 和 1 之间")
	public String getRiskLevel() {
		return riskLevel;
	}

	public void setRiskLevel(String riskLevel) {
		this.riskLevel = riskLevel;
	}
	
	@Length(min=0, max=2, message="注册方式：1,web;2,IOS;3,安卓；4,H5；5微信公众号长度必须介于 0 和 2 之间")
	public String getRegisteType() {
		return registeType;
	}

	public void setRegisteType(String registeType) {
		this.registeType = registeType;
	}
	
	@Length(min=0, max=50, message="注册来源：例：web郞眼财经,lycgweb长度必须介于 0 和 50 之间")
	public String getRegisteSource() {
		return registeSource;
	}

	public void setRegisteSource(String registeSource) {
		this.registeSource = registeSource;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="创建时间不能为空")
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
	@Length(min=0, max=50, message="email长度必须介于 0 和 50 之间")
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
	
	@Length(min=1, max=1, message="是否绑了邮箱，0：未绑字，1：已绑字长度必须介于 1 和 1 之间")
	public String getIsBindEmail() {
		return isBindEmail;
	}

	public void setIsBindEmail(String isBindEmail) {
		this.isBindEmail = isBindEmail;
	}
	
	@Length(min=0, max=1, message="用户类型：0：个人；1：公司长度必须介于 0 和 1 之间")
	public String getUserType() {
		return userType;
	}

	public void setUserType(String userType) {
		this.userType = userType;
	}
	
	@Length(min=0, max=2, message="用户角色长度必须介于 0 和 2 之间")
	public String getRole() {
		return role;
	}

	public void setRole(String role) {
		this.role = role;
	}
	
	@Length(min=0, max=1, message="是否为理财人长度必须介于 0 和 1 之间")
	public String getIsCreditor() {
		return isCreditor;
	}

	public void setIsCreditor(String isCreditor) {
		this.isCreditor = isCreditor;
	}
	
	@Length(min=0, max=1, message="原始债权人长度必须介于 0 和 1 之间")
	public String getIsOriginalCreditor() {
		return isOriginalCreditor;
	}

	public void setIsOriginalCreditor(String isOriginalCreditor) {
		this.isOriginalCreditor = isOriginalCreditor;
	}
	
	@Length(min=0, max=1, message="是否为借款人长度必须介于 0 和 1 之间")
	public String getIsDebtor() {
		return isDebtor;
	}

	public void setIsDebtor(String isDebtor) {
		this.isDebtor = isDebtor;
	}
	
	@Length(min=0, max=1, message="是否为担保机构长度必须介于 0 和 1 之间")
	public String getIsGuarantor() {
		return isGuarantor;
	}

	public void setIsGuarantor(String isGuarantor) {
		this.isGuarantor = isGuarantor;
	}
	
	@Length(min=0, max=1, message="是否为做市商长度必须介于 0 和 1 之间")
	public String getIsMarketmaker() {
		return isMarketmaker;
	}

	public void setIsMarketmaker(String isMarketmaker) {
		this.isMarketmaker = isMarketmaker;
	}
	
	@Length(min=0, max=1, message="是否为赎回机构长度必须介于 0 和 1 之间")
	public String getIsRepurchaseParty() {
		return isRepurchaseParty;
	}

	public void setIsRepurchaseParty(String isRepurchaseParty) {
		this.isRepurchaseParty = isRepurchaseParty;
	}
	
	@Length(min=0, max=1, message="是否有过投资长度必须介于 0 和 1 之间")
	public String getInvested() {
		return invested;
	}

	public void setInvested(String invested) {
		this.invested = invested;
	}
	
	@Length(min=0, max=1, message="用户等级 1，普通用户，2VIP（大额提现）长度必须介于 0 和 1 之间")
	public String getLevel() {
		return level;
	}

	public void setLevel(String level) {
		this.level = level;
	}
	
	@Length(min=1, max=1, message="1：正常；2：锁定；3：登录；4：登出(注销);5:冻结;6:正在编辑长度必须介于 1 和 1 之间")
	public String getUserStatus() {
		return userStatus;
	}

	public void setUserStatus(String userStatus) {
		this.userStatus = userStatus;
	}
	
	@Length(min=0, max=1, message="账户是否被注销长度必须介于 0 和 1 之间")
	public String getIsDeleted() {
		return isDeleted;
	}

	public void setIsDeleted(String isDeleted) {
		this.isDeleted = isDeleted;
	}
	
	@Length(min=0, max=1, message="账户是否被锁定长度必须介于 0 和 1 之间")
	public String getIsLocked() {
		return isLocked;
	}

	public void setIsLocked(String isLocked) {
		this.isLocked = isLocked;
	}
	
	@Length(min=0, max=1, message="交易密码是否被锁定长度必须介于 0 和 1 之间")
	public String getIsTradepwdLocked() {
		return isTradepwdLocked;
	}

	public void setIsTradepwdLocked(String isTradepwdLocked) {
		this.isTradepwdLocked = isTradepwdLocked;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getLockedTime() {
		return lockedTime;
	}

	public void setLockedTime(Date lockedTime) {
		this.lockedTime = lockedTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	
	@Length(min=0, max=1, message="is_first_update_login_password长度必须介于 0 和 1 之间")
	public String getIsFirstUpdateLoginPassword() {
		return isFirstUpdateLoginPassword;
	}

	public void setIsFirstUpdateLoginPassword(String isFirstUpdateLoginPassword) {
		this.isFirstUpdateLoginPassword = isFirstUpdateLoginPassword;
	}
	
	@Length(min=0, max=1, message="1:弱,2:中,3强长度必须介于 0 和 1 之间")
	public String getPwdStrength() {
		return pwdStrength;
	}

	public void setPwdStrength(String pwdStrength) {
		this.pwdStrength = pwdStrength;
	}
	
	@Length(min=0, max=1, message="is_first_login长度必须介于 0 和 1 之间")
	public String getIsFirstLogin() {
		return isFirstLogin;
	}

	public void setIsFirstLogin(String isFirstLogin) {
		this.isFirstLogin = isFirstLogin;
	}
	
	@Length(min=0, max=35, message="ip长度必须介于 0 和 35 之间")
	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}
	
	@Length(min=1, max=4, message="用户扩展信息，0:默认，1：禁止导入CRM长度必须介于 1 和 4 之间")
	public String getFlag() {
		return flag;
	}

	public void setFlag(String flag) {
		this.flag = flag;
	}
	
	@Length(min=0, max=11, message="0 or NULL 非好友推荐链接注册 , 1 好友推荐链接注册长度必须介于 0 和 11 之间")
	public String getIsFriendLink() {
		return isFriendLink;
	}

	public void setIsFriendLink(String isFriendLink) {
		this.isFriendLink = isFriendLink;
	}
	
	@Length(min=0, max=11, message="老平台迁移的用户标识长度必须介于 0 和 11 之间")
	public String getIsFromOldSite() {
		return isFromOldSite;
	}

	public void setIsFromOldSite(String isFromOldSite) {
		this.isFromOldSite = isFromOldSite;
	}
	
	@Length(min=0, max=1, message="old_pwd_updated长度必须介于 0 和 1 之间")
	public String getOldPwdUpdated() {
		return oldPwdUpdated;
	}

	public void setOldPwdUpdated(String oldPwdUpdated) {
		this.oldPwdUpdated = oldPwdUpdated;
	}
	
	@Length(min=0, max=50, message="预留字段长度必须介于 0 和 50 之间")
	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}
	
}